在Windows Server上搭建OpenVPN服务器 | 您所在的位置:网站首页 › Windows 下的 OpenVPN 安装 › 在Windows Server上搭建OpenVPN服务器 |
OpenVPN是一个TCP协议的网络层VPN实现。性能一般,但是使用广泛。 什么是OpenVPN引用维基百科对OpenVPN的解释: OpenVPN is a virtual private network (VPN) system that implements techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. 在Windows上搭建OpenVPN服务器下载+安装OpenVPN的软件部分分为客户端和服务端两部分,而在OpenVPN官网的首页给的下载地址中,并没有适用于Windows的服务端程序。 它被藏在了这个页面里。直接下载Windows 64-bit MSI installer就可以了。(如果是32位系统,你需要下载32-bit的,但我相信你是64位的Windows) 安装的时候一路next就可以了,不过有一点需要注意,选择安装组件的时候,easyrsa3并没有默认选中,需要手动选上。 安装后,为了使得虚拟网络适配器的驱动被Windows加载,需要重新启动。 生成CA根证书、服务端及客户端的公私钥对这一部分主要参考了参考阅读部分的文章1(OpenVPN server on Windows)。假设你使用的是默认安装目录,打开一个Shell,依次执行如下步骤: 1. 切换工作目录 cd "C:\Program Files\OpenVPN\easy-rsa" 2. 启动EasyRSA EasyRSA-Start.bat 3. 初始化PKI(公钥基础设施) ./easyrsa init-pki 4. 编辑配置文件 notepad vars.bat 5. 在记事本中写入如下内容(记得修改) set KEY_COUNTRY=US set KEY_PROVINCE=CA set KEY_CITY=SanFrancisco set KEY_ORG=OpenVPN set [email protected] set DH_KEY_SIZE=2048 6. 保存,生效 vars.bat ./easyrsa clean-all 7. 生成CA根证书(nopass参数表示不使用密码保护私钥,下同) ./easyrsa build-ca nopass 8. 生成服务器端的私钥 ./easyrsa build-server-full server nopass 9. 生成客户端的私钥(如果有多个客户端,需要生成多个) ./easyrsa build-client-full YourClientName nopass 10. 生成DH参数(DH是一个用来协商密钥的协议,如欲了解详情,可以阅读本人的相关密码学分析博客) ./easyrsa gen-dh 11. 生成TLS握手用到的静态密钥默认情况下,OpenVPN在TLS握手时使用静态密钥,需要用如下命令生成: openvpn --genkey tls-auth ta.key需要注意的是,这个密钥需要通过安全的方式分发给服务器和客户,并且需要妥善保存*(密码学不保护密钥!)*。官方文档是这样说的: This key should be copied over a pre-existing secure channel to the server and all client machines. 创建配置文件在OpenVPN目录下的sample-config目录里,可以找到一些示例配置文件。注意,.ovpn其实就是linux下OpenVPN的.conf配置文件,其内容完全相同,只是扩展名不同而已。 将服务器的示例配置文件拷贝一份到config-auto目录下并编辑,找到如下几行: ca ca.crt cert server.crt key server.key dh dh1024.pem tls-auth ta.key 0分别将他们改为你的实际文件目录,如: ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt" cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt" key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key" dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem" tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\ta.key" 0这个配置文件还有些地方需要修改一下: 修改port和proto来设置端口和协议(tcp或udp),官方文档建议使用udp,因为udp更容易抵抗DoS攻击和端口扫描;如果容易被QOS掉建议使用TCP以保证稳定 把topology subnet这一行的注释取消掉,不然会默认采用net30方案(为了兼容Windows下旧于2.0.9的客户端),会报warning(net30就要被废弃了) 如果使用tcp模式,就把explicit-exit-notify 1这一行注释掉。TCP模式下OpenVPN不支持此功能 重启服务,应用配置文件在运行中输入services.msc,打开服务管理页面,找到OpenVPN的服务,点击“重新启动”来重启OpenVPN服务。 服务重启后,查看OpenVPN目录下log文件夹内的server.log文件,此时应该可以看到OpenVPN服务已经正常启动了。如果有错误,按照错误提示进行修正。 登录到刚刚配置好的OpenVPN服务器同样地,OpenVPN的客户端使用.ovpn配置文件进行配置,不过服务端和客户端的配置文件不通用。要创建客户端的配置文件,需要从sample-config目录里拷贝client.ovpn进行修改。首先要修改其中的地址、端口号和协议类型,还有加密模式。(准确地说是A.E.模式,认证加密) 将配置文件拷贝给客户端使用,同时也需要将CA的证书、TLS密钥、客户端证书及私钥拷贝给客户端,就是这些文件: ca.crt CA证书 client.crt 客户端证书 client.key 客户端私钥 ta.key 用于TLS握手的静态密钥 参考阅读OpenVPN server on Windows:一份比较详细的Windows下配置OpenVPN服务器的实操指南 Galois/Counter Mode - Wikipedia:GCM模式 Hardening OpenVPN Security:增强OpenVPN的安全性 |
CopyRight 2018-2019 实验室设备网 版权所有 |